<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 
    1. 复习父传子(自定义属性)
    2. 子传父 (自定义事件)  triggerEvent('自定义事件',参数)  父组件bind:自定义事件="fn"
    3. 组件库 vant  
          小程序中使用npm下载包 需要 构建
          .json挂载使用的组件
          使用组件
    4. 头像和昵称的获取
          昵称 input type="nickname"  blur事件
          头像 button open-type="chooseAvatar"  bind:chooseavatar      
    5.  应用实例  app.js  App({a:10})  定义共享的数据/方法     getApp().a      
    6.  路由  声明式导航 navigator标签  open-type 
              编程式导航 wx.navigateTo()  wx.redirectTo()  wx.reLaunch()  wx.navigateBack({delta: 1})
    7.  页面栈  getCurrentPages()  数组
    8.  项目开发成员设置 体验成员  上传发布  提交审核....
    9. 目录结构优化
        1. 修改项目的根目录  新建miniprogram文件夹  业务文件放置miniprogram文件夹
        2. 修改配置project.config.json   指定根目录 "miniprogramRoot": "miniprogram/",
                                        手动构建npm setting."packNpmManually": true,
                                        手动构建后配置 setting.packNpmRelationList: [{
                                           "packageJsonPath": "./package.json",
                                           "miniprogramNpmDistDir": "./miniprogram" 
                                        }]
     10. 开启scss setting."useCompilerPlugins": [ "sass" ],    
     11. vscode 配置 安装3个插件 配置settings.json
     12. 拉取项目 
     13. 封装utils.toast 提示消息反馈的工具函数 
        
                              


   -->
  <!-- 
    1. http模块的封装
      1.1 安装wechat-http  
      1.2 构建
      1.3 cv文档
    2. 完成首页公告列表和公告详情
    3. authorization组件的封装  登录拦截
       组件内是有插槽控制是否限制某个页面  
       插槽的条件 App.js中获取的token 在组件中 attached钩子中判断 是否有token 控制login  没有token 强制跳转到登录页面
    4. 登录页面
       1. 认识 cunt-down组件  time  use-slot  bind:change   
       2. 发送验证码之前校验手机号的合法性
       3. 安装wechat-validate  类似于element组件的校验  简化  rules 规则  this.validate()
       4. 携带手机号 发送请求获取验证码
       5. 登录 
          5.1 预校验
          5.2. 携带参数发送请求
          5.3 存储token + refreshToken App.js 存储了本地和全局应用实例中
          5.4 跳转 authorization 页面 记录 getCurrentPages().pop().route 当做参数 携带跳转的参数
          5.5 有回跳地址 跳转 没有 就去首页
      5. 用户管理
          1. my页面 先获取个人信息并展示
          2. profile 默认展示一次个人信息 onLoad钩子中获取my页面的数据并直接使用
          3. 修改昵称  input type="nickname" bind:blur  携带最新的昵称发送请求 getCurrentPages() 调用上一个页面实例的setData方法设置nickName
          4. 修改头像  button open-type="chooseAvatar" bind:chooseavatar="fn" 
               先获取到临时路径地址
               发送请求
               拿到真实的url地址 
                getCurrentPages() 调用上一个页面实例的setData方法设置avatar
   -->
  <!--
   1. token失效处理
    响应拦截器中判断statusCode === 401 
    携带refreshToken 发送请求 获取 新的token和refreshToken 并将新的token和refreshToken存储下来
   2. 无感刷新
      重新发送一次上一次的请求   config  重写config中的header
   3. refreshToken过期的处理
       判断请求的地址是否包含refreshToken  清除坏的token和refreshToken  跳转到等了页面 并且记录回跳地址
       改造登录页面跳转 添加分支 判断 wx.switchTab跳转还是redirectTo跳转
   4. 新增房屋 list页面
      1. 房屋列表页面 先做权限处理  使用 authorization组件包裹一下
      2. 点击底部新增按钮 跳转到 地理位置页面
      3. 配置 腾讯位置服务  注册 登录  创建应用  生成key  下在sdk包  在微信后台添加请求合法域名
      4. 地理位置页面 位置搜索
         4.1 创建qqMAP实例  调用QQMap.search 获取附近住宅公寓
         4.2 wx.getLocation()  基于经纬度 获取获取附近住宅公寓
         4.3 渲染附近5条数据
      5. 逆地址解析     基于经纬度 得到具体的地址  QQMap.reverseGeocoder 
      6. 重新选择位置  wx.chooseLocation() 返回经纬度  基于经纬度 获取获取附近住宅公寓
    5. 选择楼栋
      5.1 跳转的传递了选中的小区名字
      5.2 随机数做了楼栋假数据
      5.3 渲染楼栋数据
      5.4 传递小区名字和楼栋信息 点击跳转选择房屋页面 
    6. 房屋页面
      6.1 接收传递小区名字和楼栋信息
      6.2. 随机生成楼层和房间号信息 维护了数组
      6.3 遍历展示房间号
      6.4 跳转到新增房屋页面 传递小区名字和楼栋信息和房间号信息
    7. 新增房屋页面  
     7.1. onLoad中 接收小区名字和楼栋信息和房间号信息
     7.2 表单校验
         mobile  name  gender字段 身份证正反面   校验规则
     7.3 调用wx.chooseMedia 选择图片  做临时地址的展示 
     7.4 将临时地址 wx.uploadFile 上传图像 返回真实的地址 回显    
    8. 添加房屋提交
      8.1 预校验
      8.2 删除 __webviewId__字段 使用delete关键字
      8.3 携带this.data发送请求
      8.4 跳转房屋列表页面
  -->

  <!-- 
    1. 获取房屋列表
        发送请求获取数据 展示  审核状态 配合辅助接口
    2. 查看房屋详情
       1. 传递参数
       2. 详情页面onLoad接收id  发送请求获取数据 渲染
    3. 修改房屋信息
      1. 点击修改按钮 传递id
      2. form页面 onLoad中接收id 查询房屋详情  wx.setNavigationBarTitle修改标题   
      3. 编辑提交 删除了两个字段__webviewId__  status
    4. 删除访问
       1.认识swipe-cell和dialog组件 
       2. 点击确认后 发送删除的请求 同步更新页面 直接处理数组
    5.报修    
       5.1 新增报修
          5.1.1 认识 action-sheet 动作面板组件  popup弹出层组件  datetimepicker组件
          5.1.2 报修房屋 获取渲染/选择    记录 id  name
          5.1.3 报修项目 获取渲染/ 选择   记录 id  name
          5.1.4 选中房屋/选中报修项目 外部样式类
          5.1.5 预约日期 min-date  value  confirm中获取选中的时间戳  封装了工具函数 处理格式 2020-09-10
          5.1.6 upload组件 max-count preview-size fileList  bind:after-read 
          5.1.7 after-read  处理函数中 获取临时路径  进行上传  追加到attachment数组中
          5.1.8 定义所有提交的字段和校验规则
          5.1.9 预校验通过后 携带参数 发送请求
       5.2 报修列表
         5.2.1. authorization组件包裹一下
         5.2.2 发送请求获取报修列表  四种状态 配合辅助接口 
       5.3 报修详情
        5.3.1 点击携带id跳转
        5.3.2 接收id获取报修详情并展示
   -->

  <!-- 
    1. 报修管理 上门服务中 地图
      1.1 map组件 scale 3-20  longtitude latitude 中心点    polyline路线规划  markers="[{id: ,起点经纬度 iconPath width: height}]"
      1.2 腾讯位置服务 地图实例  qqmap.direction()
    2. 报修详情
       2.1 点击传递id
       2.2 详情页面接收id 获取详情数据 展示
    3. 取消报修  发送请求
    
    4. 访客邀请
      4.1 获取审核通过的房屋信息  绑定 select事件 记录选中房屋id和名称
      4.2 准备表单数据name  gender mobile  visitDate 限制最大值
      4.3 校验规则
      4.4 发送请求新增访客邀请  => 得到id  传递到访客详情页面
   5. 访客详情
     5.1 接收id 获取访客详情信息 并展示 (业主展示)
     5.2 分享 按钮 open-type="share"就会自动触发onShareAppMessage方法 拼接encryptedData加密字段分享
     5.3 passport页面接收  再去获取一次取访客详情信息 并展示 (访客展示)  不展示 tool-bar
     5.4 保存图片到本地  wx.saveImageToPhotosAlbum 接收一个临时路径  wx.getImageInfo 转换临时路径
    6. 访客列表
      1. 准备current pageSize 发送请求 追加后赋值
      2. 向上滚动  scroll-view组件 添加事件 bind:scrolltolower="fn"
         current + 1 重新获取  临界值判断 没有更多数据   
    -->



  <!-- 个人介绍
       面试官好, 我叫xxx, 我从事前端工作xx, 个人擅长的技术栈是什么? 我最近做的项目是什么?(介绍项目)
       项目中 我负责的是哪些 功能/模块, 遇到过什么样的问题, 项目的亮点  或者 难点  解决问题的方式
       
       我个人自我评价 

  
  
  -->
</body>

</html>